package com.smart.community.region.entity;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.smart.community.commons.base.BaseEntity;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 社区分区实体类
 *
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_zone")
public class Zone extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 分区名称
     */
    @TableField("zone_name")
    private String zoneName;

    /**
     * 分区编码
     */
    @TableField("zone_code")
    private String zoneCode;

    /**
     * 所属社区ID
     */
    @TableField("community_id")
    private Long communityId;

    /**
     * 所属物业公司ID
     */
    @TableField("property_company_id")
    private Long propertyCompanyId;

    /**
     * 分区类型：residential-住宅区，commercial-商业区，office-办公区，parking-停车区，activity-活动区
     */
    @TableField("zone_type")
    private String zoneType;

    /**
     * 分区颜色标识
     */
    @TableField("zone_color")
    private String zoneColor;

    /**
     * 分区描述
     */
    @TableField("zone_description")
    private String zoneDescription;

    /**
     * 分区边界坐标数据(JSON格式)
     */
    @TableField("zone_boundary")
    private String zoneBoundary;

    /**
     * 分区中心X坐标
     */
    @TableField("zone_center_x")
    private BigDecimal zoneCenterX;

    /**
     * 分区中心Y坐标
     */
    @TableField("zone_center_y")
    private BigDecimal zoneCenterY;

    /**
     * 分区面积(平方米)
     */
    @TableField("zone_area")
    private BigDecimal zoneArea;

    /**
     * 包含楼栋数量
     */
    @TableField("building_count")
    private Integer buildingCount;

    /**
     * 包含住户数量
     */
    @TableField("household_count")
    private Integer householdCount;

    /**
     * 状态：1-启用，0-禁用
     * 使用SystemStatusEnum.ENABLED.getCode()和SystemStatusEnum.DISABLED.getCode()
     */
    @TableField("status")
    private Integer status;

    /**
     * 排序顺序
     */
    @TableField("sort_order")
    private Integer sortOrder;
}
